]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
6 years agost/icon: Add a default fallback icon
Florian Müllner [Wed, 25 Mar 2020 15:44:26 +0000 (16:44 +0100)]
st/icon: Add a default fallback icon

The idea behind commit 3dd8ffc2bb1cefd to try harder to avoid empty
icon actors because of missing icons was sound, so implement that
behavior in StIcon itself:

If the main gicon was not found, and the fallback gicon isn't set or
wasn't found either, fall back to the standard 'missing-image' icon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1127

6 years agoRevert "texture-cache: Use image-missing image when no other icon was loaded"
Florian Müllner [Wed, 25 Mar 2020 15:40:47 +0000 (16:40 +0100)]
Revert "texture-cache: Use image-missing image when no other icon was loaded"

The commit broke StIcon's :fallback-gicon property, as it relies on failure to load
an icon to determine that the fallback should be shown.

Luckily StIcon is the only user of st_texture_cache_load_gicon() (at least in
regular shell code), so we'll be able to implement the 'image-missing' fallback
there.

This reverts commit 3dd8ffc2bb1cefd603bcadabd8886dda3192dbd5.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1127

6 years agoextensionPrefs: Export parent window for prefs dialog
Florian Müllner [Thu, 5 Mar 2020 17:01:38 +0000 (18:01 +0100)]
extensionPrefs: Export parent window for prefs dialog

Now that OpenExtensionPrefs()'s parentWindow parameter is actually
supported, export the main application window so it can act as
transient parent to the prefs dialog.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087

6 years agodbusServices/extensions: Handle parentWindow parameter
Florian Müllner [Thu, 5 Mar 2020 16:19:38 +0000 (17:19 +0100)]
dbusServices/extensions: Handle parentWindow parameter

Now that the service implements the preference dialog, it's time
to support OpenExtensionPrefs()'s parentWindow parameter and make
the dialog a transient of the external window if specified.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087

6 years agoshew: Add small library for dealing with external windows
Florian Müllner [Thu, 5 Mar 2020 03:52:09 +0000 (04:52 +0100)]
shew: Add small library for dealing with external windows

In order to support OpenExtensionPrefs()'s parentWindow parameter,
we will need the ability to make a window transient to an external
window identified by a string handle.

This takes the corresponding code from xdg-desktop-portal-gtk and
brings it into an introspectable form, likewise the counterpart in
libportal to export a string handle for a GtkWindow.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087

6 years agoUpdate Basque translation
Ibai Oihanguren Sala [Thu, 26 Mar 2020 15:11:16 +0000 (15:11 +0000)]
Update Basque translation

6 years agoFix prompt for updates on end session dialog
Michael Catanzaro [Wed, 18 Mar 2020 01:56:33 +0000 (20:56 -0500)]
Fix prompt for updates on end session dialog

Since PackageKit 1.11.1, the prompt to install updates on the end
session dialog has been (mostly) broken. The problem is that it only
works if PackageKit is running at the time the end session dialog is
opened; otherwise, our GDBusProxy has invalidated all of its properties,
which we read to see if update is possible. We need to autostart
PackageKit before reading its properties to fix this problem. That would
be easy if we were calling a method to see if an update or distro
upgrade were available, but since we're just checking a property, using
cached properties won't suffice. We'll have to manually check the
property value to ensure we autostart PackageKit.

Most of the code is written by Florian. Thanks Florian!

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2276

6 years agolayout: Show system background and animate on the same frame
Daniel van Vugt [Tue, 17 Mar 2020 07:58:21 +0000 (15:58 +0800)]
layout: Show system background and animate on the same frame

Previously we'd show the system background and then wait till the
main loop was idle before beginning the shell startup animation.
This resulted in one initial frame that was always just the system
background.

Now we try to get both the system background and the startup animation
begun on the same first frame.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1102

6 years agotelepathyClient: Use proper Object to wrap different tpl messages
Marco Trevisan (Treviño) [Fri, 20 Mar 2020 19:31:45 +0000 (20:31 +0100)]
telepathyClient: Use proper Object to wrap different tpl messages

In telepathyClient we consider messages both Tpl.TextEvents and
Tpl.Messages, and we manually create JS objects to copy the properties we
care for each one. This may lead to objects not matching the interface we
want.

Instead, use an object with construct-only properties and two factory static
methods to initialize it.

Unfortunately we need to use the ChatMessageClass for the class name or
calling the static methods would trigger a gjs error as per [1].

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1113

[1] https://gitlab.gnome.org/GNOME/gjs/-/issues/310

6 years agoUpdate German translation
Wolfgang Stöggl [Wed, 25 Mar 2020 22:11:59 +0000 (22:11 +0000)]
Update German translation

6 years agodata: ensure systemd environment is sanitized when shell exits
Ray Strode [Wed, 25 Mar 2020 20:30:46 +0000 (16:30 -0400)]
data: ensure systemd environment is sanitized when shell exits

When mutter is acting as a display server it sets a number of
environment variables in the user's session. These variables
tell applications where the display server's sockets are.

When the shell exits at logout time it leaves these environment
variables in the systemd --user environment, which can confuse
subsequent sessions.

This commit clears up the environment on exit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1129

6 years agotelepathyClient: Use GObjects based message objects
Marco Trevisan (Treviño) [Fri, 20 Mar 2020 19:06:55 +0000 (20:06 +0100)]
telepathyClient: Use GObjects based message objects

As per commit b5676a2a5 ChatNotification is a GObject, but I was wrongly
considering that it was using Tp.Message's as children, instead it just
uses custom-built objects to pass information around through signals.

Given gjs can only use GObjects as signal parameters, create a small wrapper
class to hold the ChatNotification messages and use it as signal parameter.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2449

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1112

6 years agolint: Sync configuration with gjs
Florian Müllner [Wed, 25 Mar 2020 21:15:26 +0000 (22:15 +0100)]
lint: Sync configuration with gjs

Nothing big or scary, just a bump in the standard version which
allows us to use shiny things without eslint complaining :-)

6 years agomain: Do not warn about missing GDM on each login
Florian Müllner [Fri, 20 Mar 2020 11:42:04 +0000 (12:42 +0100)]
main: Do not warn about missing GDM on each login

We now warn on startup if screen locking isn't available, however for
users who choose not to use GDM or logind, repeating the warning on
each login is more annoying than helpful.

Instead, limit the warning to the first login on which the screen lock
became unavailable. That way the notification will still serve the
intended purpose of informing the user, but without being perceived
as nagging.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432

6 years agoenvironment: Hook up touch_file to GFile prototype
Florian Müllner [Mon, 23 Mar 2020 17:00:27 +0000 (18:00 +0100)]
environment: Hook up touch_file to GFile prototype

We don't usually extend introspected types with our own API, but in
this case it's too tempting to make the helper functions usable with
Gio._promisify() ...

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432

6 years agoshell/util: Add touch_file_async() helper
Florian Müllner [Mon, 23 Mar 2020 16:57:38 +0000 (17:57 +0100)]
shell/util: Add touch_file_async() helper

Add a small helper method to asynchronously "touch" a file and return
whether the file was created or not.

As g_file_make_directory_with_parents() doesn't have an async variant,
we need a C helper to make the entire operation non-blocking.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432

6 years agoextensionPrefs: Ensure up-to-date release version in metainfo
Florian Müllner [Sun, 22 Mar 2020 17:00:00 +0000 (18:00 +0100)]
extensionPrefs: Ensure up-to-date release version in metainfo

It's easy to forget to add a new <release> tag to the metainfo when
doing a new release.

Address this with an additional test if appstream-util is recent
enough to include the new validate-version command, so distcheck
fails when the metainfo wasn't updated.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1117

6 years agoendSessionDialog: apply updates by default
Michael Catanzaro [Wed, 25 Mar 2020 17:17:28 +0000 (12:17 -0500)]
endSessionDialog: apply updates by default

Users can still uncheck the box to avoid applying updates, but by
default we will encourage the user to update.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2427

6 years agost: Apply css foreground color to text as a PangoAttribute
Carlos Garnacho [Tue, 24 Mar 2020 23:34:58 +0000 (00:34 +0100)]
st: Apply css foreground color to text as a PangoAttribute

Rely on the Pango renderer handling this properly, instead of tinting
the full ClutterText in the color specified through css.

Also set the caret color explicitly, since it used to be set as a side
effect of clutter_text_set_color(), but no longer is.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/850
6 years agoUpdate Turkish translation
Emin Tufan Çetin [Wed, 25 Mar 2020 06:27:54 +0000 (06:27 +0000)]
Update Turkish translation

6 years agoshell/screenshot: Throw error on failure
Florian Müllner [Tue, 24 Mar 2020 06:15:26 +0000 (07:15 +0100)]
shell/screenshot: Throw error on failure

Commit da537cda43 moved the Shell.Screenshot API to GIO's async pattern,
but we never set the GError passed to the *_finish() functions and only
indicate failure by returning FALSE.

The expected behavior is to throw an error in that situation, so make sure
we do that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123

6 years agoshell/screenshot: Remove unnecessary NULL check
Florian Müllner [Tue, 24 Mar 2020 06:10:27 +0000 (07:10 +0100)]
shell/screenshot: Remove unnecessary NULL check

Since commit be5f5ec9d40, the output stream is created externally and
expected to be non-NULL, so the check is now pointless (in particular
*after* calling g_object_ref() on the stream).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123

6 years agoshell/screenshot: Check preconditions of public API
Florian Müllner [Tue, 24 Mar 2020 07:45:12 +0000 (08:45 +0100)]
shell/screenshot: Check preconditions of public API

It's good practice to guard public API against programmer errors,
so add the usual g_return*_if_fail() calls.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123

6 years agoscreenshot: Return error when stream creation fails
Florian Müllner [Tue, 24 Mar 2020 06:44:31 +0000 (07:44 +0100)]
screenshot: Return error when stream creation fails

The Shell.Screenshot API expects valid output streams for writing the
completed screenshot, not NULL.

Handle this properly by returning an error instead of passing it on
to the screenshot.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123

6 years agodbusServices/extensions: Include Params module
Florian Müllner [Tue, 24 Mar 2020 09:13:43 +0000 (10:13 +0100)]
dbusServices/extensions: Include Params module

It's unused and was removed in commit a0467bf875, which broke extensions
that rely on it in their preference widget.

As the removal only happened post-3.36.0, add it back until we branch.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2476

6 years agoibusManager: Simplify code a bit
Florian Müllner [Mon, 23 Mar 2020 22:22:17 +0000 (23:22 +0100)]
ibusManager: Simplify code a bit

ibus_bus_request_name_async_finish() will throw an error on failure,
so we can move the error handling there instead of checking for the
return value, which saves one level of indentation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1122

6 years agotexture-cache: Use image-missing image when no other icon was loaded
Mario Sanchez Prada [Wed, 10 May 2017 14:59:32 +0000 (15:59 +0100)]
texture-cache: Use image-missing image when no other icon was loaded

If a given icon is not available for neither the current theme nor any
of the fallback options (default theme -"Adwaita", "gnome"...), the
call to gtk_icon_theme_lookup_by_gicon() will return a NULL value, which
returned by the Shell Toolkit as is, causing trouble in the Shell's JS
code when calling shell_app_create_icon_texture() to create an icon.

To at least mitigate the chances of this having this issue happening, we
should at least try to load the standad 'image-missing' icon from the
Icon Naming Specification spec when we receive a NULL here, so that
at least we try to show something to the user, even if it's ugly.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121

6 years agoremoteSearch: Fix typos in log messages
Philip Withnall [Fri, 25 Jan 2019 11:58:29 +0000 (11:58 +0000)]
remoteSearch: Fix typos in log messages

I have this compulsion to rid the world of the typo ‘DBus’.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121

6 years agoextensions-tool: Use new Extensions proxy
Florian Müllner [Sat, 21 Mar 2020 01:32:08 +0000 (02:32 +0100)]
extensions-tool: Use new Extensions proxy

While sandboxing isn't a concern for the gnome-extensions command line
tool, using the Extensions proxy directly means that D-Bus methods are
called from the tool rather than gnome-shell, which allows the proxy
to auto-shutdown when done.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agoextensionPrefs: Use new Extensions proxy
Florian Müllner [Wed, 4 Mar 2020 04:05:08 +0000 (05:05 +0100)]
extensionPrefs: Use new Extensions proxy

We will soon sandbox the application, so it makes sense to not request
more access than strictly necessary (even with priviledged access like
extension management).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agodbusServices/extensions: Take over prefs dialog from app
Florian Müllner [Wed, 4 Mar 2020 04:05:08 +0000 (05:05 +0100)]
dbusServices/extensions: Take over prefs dialog from app

As outlined earlier, in order to turn the Extensions app into a properly
sandboxed application, we need to split out the extension prefs dialog
and move it elsewhere.

With "elsewhere" being the new Extensions D-Bus service, effectively
turning it into a shell extensions portal.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agodbusServices/extensions: Proxy Extensions API
Florian Müllner [Wed, 4 Mar 2020 03:02:28 +0000 (04:02 +0100)]
dbusServices/extensions: Proxy Extensions API

Similar to the previously added org.freedesktop.Notifications proxy,
this exposes the org.gnome.Shell.Extensions API and forwards any
request to the real implementation in gnome-shell.

The motivation differs though: We want to be able to package the
extension app as flatpak and distribute it separately, but the
extension prefs dialog is hard to impossible to sandbox:

 - filenames need translating between host and sandbox, and we
   can only do that in some cases (serializing/deserializing
   extensions), but not others (extension settings that refer
   to files)

 - system extensions install their GSettings schemas in the system
   path; the best we can do there is assume a host prefix of /usr
   and set GSETTINGS_SCHEMA_DIR in the flatpak (eeks)

 - extensions may rely on additional typelibs that are present on
   the host (for example because gnome-shell itself depends on
   them), but not inside the sandbox - unless we bundle all of
   gnome-shell's dependencies

 - if gjs/mozjs differ between host and sandbox, extensions must
   handle different runtimes for the extension and its prefs

And all those issues occur despite a very permissive sandbox (full
host filesystem access, full dconf access, full org.gnome.Shell
access (including Eval()!)).

This new service will give us an alternative place for handling
the preference dialog:

 - it runs outside of gnome-shell process, so can open windows

 - it runs on the host, so the extension's prefs get to run
   in the same namespace as the extension itself

That is, the service will provide portal-like functionality (albeit
not using the org.freedesktop.portal.* namespace, as extension
management is an inherently privileged operation).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agoextensionPrefs: Stop handling UUIDs on the command line
Florian Müllner [Thu, 5 Mar 2020 18:44:28 +0000 (19:44 +0100)]
extensionPrefs: Stop handling UUIDs on the command line

We are jumping through quite some hoops to support showing only the
preference dialog when given a UUID on the command line.

As gnome-shell is about to stop calling out to us for the prefs dialog,
the reason for supporting this is going away, so remove all the special
handling.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agoextensionPrefs: Use template for preference dialog
Florian Müllner [Fri, 6 Mar 2020 00:03:45 +0000 (01:03 +0100)]
extensionPrefs: Use template for preference dialog

The dialog that contains the extension's preference widget has become
fairly complex over time, mostly due to the error handling.

It therefore makes sense to move it to a template, just like we did
for the main application window and extension rows.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106

6 years agocloseDialog: Remove transitions before resetting dialog
Florian Müllner [Sat, 21 Mar 2020 23:18:13 +0000 (00:18 +0100)]
closeDialog: Remove transitions before resetting dialog

On X11, _onFocusChanged() updates the input region, as well as the
reactive-ness of the dialog's buttons.

That method is not only used as signal handlers (which are correctly
disconnected when the dialog is hidden), it also runs when the "show"
transition completes.

That's a problem if the transition is still ongoing when the dialog is
hidden, as it will then only complete when it is replaced by the "hide"
transition, after the this._dialog has been reset to null, and trying
to access the dialog's buttons results in an error.

Avoid this by explicitly removing all transition on hide before
resetting the dialog.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2467

6 years agokeyboard: Fix fallback layout when using variants
Florian Müllner [Mon, 23 Mar 2020 15:14:47 +0000 (16:14 +0100)]
keyboard: Fix fallback layout when using variants

Commit c1ec7b2ff meant to fall back to the base layout in case
a variant like `fr+oss` is set up, but as we are checking for
'+' on the array rather than the layout name, the fallback only
"works" for a layout that is literally called '+', whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2471

6 years agounlockDialog: Handle embedded newlines in notifications
Florian Müllner [Sun, 22 Mar 2020 20:14:34 +0000 (21:14 +0100)]
unlockDialog: Handle embedded newlines in notifications

Detailed notifications are meant to be single line, just as unexpanded
notification banners. So handle them the same way as in the message
list, and replace embedded newlines by spaces.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2463

6 years agologinDialog: Retain native logo dimensions
Daniel van Vugt [Mon, 16 Mar 2020 10:05:53 +0000 (18:05 +0800)]
loginDialog: Retain native logo dimensions

So that the same logo may be used during boot and keeps its
dimensions on the login screen, appearing to never move.

Related to: https://bugs.launchpad.net/bugs/1867133

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1101

6 years agoextensions-tool: Use OpenExtensionPrefs() method
Florian Müllner [Tue, 10 Mar 2020 16:47:25 +0000 (17:47 +0100)]
extensions-tool: Use OpenExtensionPrefs() method

LaunchExtensionPrefs() was deprecated in commit fda938175e5d,
so switch to the replacement.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1097

6 years agoextensionPrefs: Sync list visibility on status changes
Florian Müllner [Thu, 12 Mar 2020 21:55:43 +0000 (22:55 +0100)]
extensionPrefs: Sync list visibility on status changes

We only show the list of system- and user extensions if corresponding
extensions are installed, however we only update the visibility
after loading the initial list of extensions.

As it's possible for the first user extension to be installed while the
app is open or the last one to be removed, we should also update the
list visibility after extension state changes.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1088

6 years agoUpdate Hebrew translation
Yosef Or Boczko [Sat, 21 Mar 2020 23:27:40 +0000 (23:27 +0000)]
Update Hebrew translation

6 years agoUpdate Catalan translation
Jordi Mas [Sat, 21 Mar 2020 22:37:37 +0000 (23:37 +0100)]
Update Catalan translation

6 years agoUpdate Croatian translation
Goran Vidović [Sat, 21 Mar 2020 21:48:00 +0000 (21:48 +0000)]
Update Croatian translation

6 years agodbusServices: Allow to inhibit auto-shutdown
Florian Müllner [Fri, 20 Mar 2020 21:32:08 +0000 (22:32 +0100)]
dbusServices: Allow to inhibit auto-shutdown

While we only shut down after a method call completed or (if the
interface has signals) the sender disconnects from the bus, services
may need to inhibit auto-shutdown for more specific reasons themselves,
for example when a method call kicks off an operation that should
complete before shutting down.

Add hold() and release() methods like Gio.Application for those cases.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1115

6 years agobuild: Add configuration summaries
Florian Müllner [Thu, 5 Mar 2020 11:44:35 +0000 (12:44 +0100)]
build: Add configuration summaries

Meson now has a summary() function to easily summarize the build
configuration after the project was configured, use that for some
fancy output when the feature is available.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072

6 years agobuild: Make bash-completion support optional
Florian Müllner [Thu, 5 Mar 2020 13:56:13 +0000 (14:56 +0100)]
build: Make bash-completion support optional

Whether we install bash-completion support currently depends on whether
the corresponding pkg-config dependency is found.

Turning this into a feature option keeps that behavior by default, but
also allows to explicitly enable or disable the support.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072

6 years agobuild: Use fixed gettext domain for non-subproject extension-tool builds
Florian Müllner [Thu, 5 Mar 2020 13:28:21 +0000 (14:28 +0100)]
build: Use fixed gettext domain for non-subproject extension-tool builds

Clarify how the option is supposed to be used by
 - ignoring it for non-subproject builds
 - enforcing that it is set for subproject builds

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072

6 years agobuild: Yield 'man' option to extension-tool subproject
Florian Müllner [Thu, 5 Mar 2020 02:54:23 +0000 (03:54 +0100)]
build: Yield 'man' option to extension-tool subproject

Turns out meson has a build-in pattern of what we are doing, namely:
Set a subproject option to a parent project option of the same name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072

6 years agobuild: Drop install argument from configure_file()
Florian Müllner [Sat, 21 Mar 2020 19:38:53 +0000 (20:38 +0100)]
build: Drop install argument from configure_file()

It requires meson 0.50.0 and is not necessary when install_dir
is specified, so just drop it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072

6 years agobuild: Assert extension-tool version is bumped alongside gnome-shell
Florian Müllner [Sun, 8 Mar 2020 00:57:34 +0000 (01:57 +0100)]
build: Assert extension-tool version is bumped alongside gnome-shell

I always forget to keep the extension-tool version number in sync when
doing a new release. Given that it's unlikely that I'll do much better
in the future by myself, make distcheck fail when the versions don't
match.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1076

6 years agoUpdate Serbian translation
Марко Костић [Sat, 21 Mar 2020 14:31:17 +0000 (14:31 +0000)]
Update Serbian translation

6 years agobuild: Add missing dependency to run-js-test
Jan Tojnar [Mon, 18 Sep 2017 23:05:13 +0000 (01:05 +0200)]
build: Add missing dependency to run-js-test

run-js-test requires girepository.h header file which is provided
by gobject-introspection. gobject-introspection is required by gjs,
another of our dependencies, so, usually, the header gets included
by inheriting the cflags from there but some distros interpret
pkg-config fields more strictly[1] so that will not be the case there.

Listing direct dependencies explicitly is a good practice any way
so let’s do that.

[1]: https://bugs.freedesktop.org/show_bug.cgi?id=105572

https://bugzilla.gnome.org/show_bug.cgi?id=787864
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1114

6 years agoextensionPrefs: Remove unused files
Florian Müllner [Thu, 19 Mar 2020 22:24:34 +0000 (23:24 +0100)]
extensionPrefs: Remove unused files

We include the regular Config module from js/misc, not the stripped-down
copy that was added in commit c8a4a9168.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1109

6 years agoUpdate Persian translation
Danial Behzadi [Fri, 20 Mar 2020 23:36:44 +0000 (23:36 +0000)]
Update Persian translation

6 years agoUpdate Catalan translation
Jordi Mas [Fri, 20 Mar 2020 17:47:41 +0000 (18:47 +0100)]
Update Catalan translation

6 years agopadOsd: Add parameter type to keybinding-edited signal
Carlos Garnacho [Fri, 20 Mar 2020 12:31:03 +0000 (13:31 +0100)]
padOsd: Add parameter type to keybinding-edited signal

This has a string argument, but none was defined.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2451
6 years agoUpdated Spanish translation
Daniel Mustieles [Fri, 20 Mar 2020 11:30:35 +0000 (12:30 +0100)]
Updated Spanish translation

6 years agoUpdate French translation
Guillaume Bernard [Fri, 20 Mar 2020 07:38:32 +0000 (07:38 +0000)]
Update French translation

6 years agoUpdate Indonesian translation
Kukuh Syafaat [Fri, 20 Mar 2020 07:14:37 +0000 (07:14 +0000)]
Update Indonesian translation

6 years agodateMenu: Show minutes for timezones that have minutes offset
Jonas Dreßler [Thu, 19 Mar 2020 19:53:19 +0000 (20:53 +0100)]
dateMenu: Show minutes for timezones that have minutes offset

Some timezones, like the one of Kathmandu don't only have hour-based
timezone offsets, but their timezones are also offset by minutes. So
instead of showing weird values like "+5.8", show the minutes properly
in a format like "+5:45".

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2438

6 years agodateMenu: Clean up timezone offset calculation a bit
Jonas Dreßler [Thu, 19 Mar 2020 19:48:12 +0000 (20:48 +0100)]
dateMenu: Clean up timezone offset calculation a bit

Use const variables and change some names to make showing minute-offsets
in the next commit a bit more straightforward.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1107

6 years agoextensionPrefs: Initialize gettext
Florian Müllner [Thu, 19 Mar 2020 19:38:16 +0000 (20:38 +0100)]
extensionPrefs: Initialize gettext

I misremembered that imports.package.start() would set up the correct
gettext domain, but the module only provides a convenience method
for doing that.

Use it to bring back translations in the Extensions app, whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1108

6 years agoUpdate Ukrainian translation
Yuri Chornoivan [Thu, 19 Mar 2020 20:42:12 +0000 (20:42 +0000)]
Update Ukrainian translation

6 years agoUpdate Swedish translation
Anders Jonsson [Thu, 19 Mar 2020 20:41:40 +0000 (20:41 +0000)]
Update Swedish translation

6 years agoUpdate Italian translation
Milo Casagrande [Thu, 19 Mar 2020 15:09:35 +0000 (15:09 +0000)]
Update Italian translation

6 years agoUpdate Polish translation
Piotr Drąg [Thu, 19 Mar 2020 14:42:25 +0000 (15:42 +0100)]
Update Polish translation

6 years agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Thu, 19 Mar 2020 14:37:36 +0000 (14:37 +0000)]
Update Brazilian Portuguese translation

6 years agoextensionPrefs: Hook up kill switch to D-Bus property
Florian Müllner [Thu, 5 Mar 2020 17:46:18 +0000 (18:46 +0100)]
extensionPrefs: Hook up kill switch to D-Bus property

Now that the org.gnome.Shell.Extensions interface exposes the
disable-user-extensions setting on D-Bus, we can use that instead
of the shell's GSettings.

In a future where we distribute the app separately as flatpak, this
will require one less hole in the sandbox.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Load D-Bus interface from own resource
Florian Müllner [Sat, 7 Mar 2020 18:26:06 +0000 (19:26 +0100)]
extensionPrefs: Load D-Bus interface from own resource

Using the "regular" loadInterfaceXML() helper means less code duplication,
but it also ties us to the resource used by gnome-shell.

In order to untangle the extension app from core gnome-shell, change that
to load the interface from the existing data resource instead. While that
does involve reimplementing loadInterfaceXML(), it's not too bad actually
with the resource-loading code stripped (as the data resource is already
loaded by the package module).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Make app D-Bus-activatable
Florian Müllner [Sun, 8 Mar 2020 21:38:47 +0000 (22:38 +0100)]
extensionPrefs: Make app D-Bus-activatable

This is the preferred way of launching applications nowadays.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Add metainfo
Florian Müllner [Thu, 12 Mar 2020 19:27:32 +0000 (20:27 +0100)]
extensionPrefs: Add metainfo

This is required for the app to appear properly in GNOME Software.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Move desktop file and icons from top-level data
Florian Müllner [Sun, 8 Mar 2020 14:04:46 +0000 (15:04 +0100)]
extensionPrefs: Move desktop file and icons from top-level data

Another small step towards making the extensions app code
self-contained ...

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Move data/sources into subdirectories
Florian Müllner [Sun, 8 Mar 2020 13:50:59 +0000 (14:50 +0100)]
extensionPrefs: Move data/sources into subdirectories

As we will eventually move the code to a subproject, start arranging
it like a top-level srcdir.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agoextensionPrefs: Use imports.package.start()
Florian Müllner [Thu, 5 Mar 2020 16:44:27 +0000 (17:44 +0100)]
extensionPrefs: Use imports.package.start()

We want to make the extensions app code more self-contained to make it
easier to build separately, and ultimately make it available on flathub.

One complication we are facing is that it is currently all over the source
tree:
 - js/extensionPrefs for the main code
 - src for the launcher process
 - data for .desktop file and icons

Switching from a C launcher to the imports.package module allows us to
consolidate the first two, and will also take care of the annoying
setup bits (defining JS search path, extending GI lookup, loading
resources).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081

6 years agomodemManager: fixed dbus path for GDBusProxy
Reik Keutterling [Thu, 19 Mar 2020 11:06:26 +0000 (12:06 +0100)]
modemManager: fixed dbus path for GDBusProxy

Fix this runtime error:
JS ERROR: TypeError: this._proxy.SignalQuality is null
_reloadSignalQuality@resource:///org/gnome/shell/misc/modemManager.js:252:34
_init@resource:///org/gnome/shell/misc/modemManager.js:234:14
NMDeviceModem@resource:///org/gnome/shell/ui/status/network.js:517:34
_deviceAdded@resource:///org/gnome/shell/ui/status/network.js:1755:27

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1105

6 years agoUpdate Slovak translation
Peter Mráz [Thu, 19 Mar 2020 06:20:35 +0000 (06:20 +0000)]
Update Slovak translation

6 years agoUpdate Slovak translation
Peter Mráz [Wed, 18 Mar 2020 14:54:25 +0000 (14:54 +0000)]
Update Slovak translation

6 years agoextensionSystem: Catch errors when updating extensions
Florian Müllner [Mon, 9 Mar 2020 15:45:22 +0000 (16:45 +0100)]
extensionSystem: Catch errors when updating extensions

Extension updates are installed at startup, so any errors that bubble
up uncaught will prevent the startup to complete.

While the most likely error reason was addressed in the previous commit
(pending update for a no-longer exitent extension), it makes sense to
catch any kind of corrupt updates to not interfere with shell startup.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343

6 years agoextensionDownloader: Remove pending updates with extension
Florian Müllner [Mon, 9 Mar 2020 15:49:34 +0000 (16:49 +0100)]
extensionDownloader: Remove pending updates with extension

When an extension is uninstalled, there is no point in keeping
a pending update: If the update didn't fail (which it currently
does), we would end up sneakily reinstalling the extension.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343

6 years agonetworkAgent: Make searching VPN binaries asynchronous
Florian Müllner [Sat, 14 Mar 2020 21:01:00 +0000 (22:01 +0100)]
networkAgent: Make searching VPN binaries asynchronous

Doing blocking IO in a graphical UI is bad, doing it in the compositor
is much much worse. So even if handling VPN requests is a relatively
rare event, doing it asynchronously is better.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386

6 years agoshell/network-agent: Wrap nm_plugin_info_new_search_file()
Florian Müllner [Sat, 14 Mar 2020 20:51:33 +0000 (21:51 +0100)]
shell/network-agent: Wrap nm_plugin_info_new_search_file()

While we can use the libnm API directly from JS, the call will
synchronously load the VPN service descriptions from disk.
Previously we were lowering the impact by caching the result,
but as we stopped doing that, it becomes more important to address
the issue properly and move it off to a thread.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386

6 years agonetworkAgent: Drop VPN plugin cache
Florian Müllner [Fri, 13 Mar 2020 21:09:33 +0000 (22:09 +0100)]
networkAgent: Drop VPN plugin cache

libnm doesn't only search for plugins in the regular VPN plugin directory,
but also in the legacy location and the directory pointed to by the
NM_VPN_PLUGIN_DIR environment variable (if set).

We don't monitor the additional directories, so it's possible for our cache
to become outdated.

Instead of trying to play catch-up with libnm's internals, do what nm-applet
does and use the appropriate API to look up the plugin on each request.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386

6 years agoextensionDownloader: Only check server if there's something to update
Florian Müllner [Sun, 15 Mar 2020 22:41:27 +0000 (23:41 +0100)]
extensionDownloader: Only check server if there's something to update

checkForUpdates() will currently always query the server for updates,
even when passing an empty vardict of installed extensions. We know
there won't be any updates in that case, so avoid a pointless network
request.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1100

6 years agodateMenu: Don't ellipsize world clock time/tz
Florian Müllner [Fri, 13 Mar 2020 14:37:42 +0000 (15:37 +0100)]
dateMenu: Don't ellipsize world clock time/tz

If we need to ellipsize, it should be the location name, not the time
or timezone offset.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1090

6 years agoa11y: Change HC icon theme first
Florian Müllner [Sat, 14 Dec 2019 18:15:53 +0000 (19:15 +0100)]
a11y: Change HC icon theme first

There are two ways for applications to provide a high contrast icon:

 1. install an icon into the HighContrast theme
 2. install a symbolic icon into the default hicolor theme

The latter is preferred nowadays, and implemented in the high-contrast
CSS variant by enforcing the symbolic icon style.

However together with the way we currently enable/disable high-contrast,
this can lead to the following race:
 1. the GTK theme is changed from HighContrast
 2. we reload the default stylesheet
 3. the icon style changes to "regular", so we request a
    new icon from the HighContrast icon theme
 4. the icon theme is changed from HighContrast
 5. we evict existing icons from the cache
 6. we reload icons for the new icon theme; however as we
    find a pending request (from 3), we re-use it
 7. the request from 3 finishes, and we end up with a
    wrong icon in the cache

The simplest fix is to change the icon theme before the GTK theme: Unlike the
theme name, the icon style is encoded in the cache key, so we won't re-use
an old (and incorrect) request in that case.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2414

6 years agoUpdate Russian translation
Stas Solovey [Sun, 15 Mar 2020 21:14:23 +0000 (21:14 +0000)]
Update Russian translation

6 years agomodemManager: Look for property on correct object
Cosimo Cecchi [Sat, 14 Mar 2020 21:42:43 +0000 (14:42 -0700)]
modemManager: Look for property on correct object

The SignalQuality property is defined on the GDBusProxy, not the modem
JS object.
Fix this runtime warning:

JS WARNING: [resource:///org/gnome/shell/misc/modemManager.js 252]: reference to undefined property "SignalQuality"
JS ERROR: TypeError: this.SignalQuality is undefined
_reloadSignalQuality@resource:///org/gnome/shell/misc/modemManager.js:252:34
_init@resource:///org/gnome/shell/misc/modemManager.js:234:14
NMDeviceModem@resource:///org/gnome/shell/ui/status/network.js:517:34
_deviceAdded@resource:///org/gnome/shell/ui/status/network.js:1755:27

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1097

6 years agojs: Always use AppSystem to lookup apps
Florian Müllner [Sat, 14 Mar 2020 13:45:42 +0000 (14:45 +0100)]
js: Always use AppSystem to lookup apps

There is no good reason for bypassing the application cache in
AppSystem and loading .desktop files again.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1093

6 years agocalendar: Adjust for evolution changes
Florian Müllner [Sat, 14 Mar 2020 13:45:42 +0000 (14:45 +0100)]
calendar: Adjust for evolution changes

When launching the default calendar application, we special-case
evolution to make sure it starts up with the calendar component.

This is currently broken in two ways:

 - evolution changed its .desktop file to use reverse DNS notation

 - as evolution can now be distributed via flatpak, we can no longer
   assume that 'evolution-calendar.desktop' exists when evolution does
   (even though we ship the .desktop file ourselves, it is considered
   invalid if the executable isn't found)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1093

6 years agomain: Unwatch notification proxy name after auto-start
Florian Müllner [Thu, 12 Mar 2020 22:23:37 +0000 (23:23 +0100)]
main: Unwatch notification proxy name after auto-start

We only "watch" the 'org.gnome.Shell.Notifications' name to start the
service, not to actually monitor name owner changes; so unwatch the
name once that's done.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2381

6 years agomain: Activate notification proxy on start
Florian Müllner [Wed, 4 Mar 2020 01:35:21 +0000 (02:35 +0100)]
main: Activate notification proxy on start

At least for the time being, this looks like the easiest option to
launch the service:

 - we could add a systemd unit, but then we'd need to update the
   RequiredComponents in the fallback session definition as well,
   making it necessary for gnome-shell, gnome-shell-extensions and
   gnome-session to be updated to 3.36.1 in lockstep

 - autostart is problematic as it would make gnome-shell conflict
   with other notification daemons; also autostart is most useful
   with automatic shutdown, which would require tracking signal
   subscriber to determine when the service is unused

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547

6 years agodbusServices/notifications: Add a separate notification daemon
Florian Müllner [Thu, 16 May 2019 19:08:06 +0000 (21:08 +0200)]
dbusServices/notifications: Add a separate notification daemon

Add a small service that exposes the Fdo notification API under the
well-known name, and forwards any requests to the actual implementation
in the shell.

That way any app with permission to talk to org.freedesktop.Notifications
will get exactly that, and nothing more.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547

6 years agomain: Stop owning the public org.freedesktop.Notifications name
Florian Müllner [Thu, 16 May 2019 17:30:35 +0000 (19:30 +0200)]
main: Stop owning the public org.freedesktop.Notifications name

For sandboxed apps, permission to talk to org.freedesktop.Notifications
looks innocent enough. However as all exported services share the same
connection to the session bus, that permission actually grants an app
access to *any* shell D-Bus API.

While we want apps to use the notification portal, it is still common
for apps to use libnotify, raw D-Bus calls or even notify-send.

We don't want to give those apps a way to circumvent most of the sandbox
restrictions, so stop owning the org.freedesktop.Notifications name.

In a next step we will implement a separate notification-daemon that
exposes the API on the well-known address and proxies any requests to
the real implementation in gnome-shell.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547

6 years agodbusServices: Add some base classes for small stand-alone services
Florian Müllner [Wed, 4 Mar 2020 02:06:57 +0000 (03:06 +0100)]
dbusServices: Add some base classes for small stand-alone services

There are a couple of D-Bus services that are currently provided by
gnome-shell for which it makes sense to move them fully or partially
into separate processes:

 - screen recording (performance)
 - FDO notifications (security)
 - Extensions (portalization)

Add some base classes and build system glue to take care of the
common boilerplate.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547

6 years agoapp-cache: add ShellAppCache for GAppInfo caching
Christian Hergert [Fri, 28 Feb 2020 03:36:14 +0000 (19:36 -0800)]
app-cache: add ShellAppCache for GAppInfo caching

This caches GAppInfo so that the compositor thread does not have to perform
costly disk access to load them. Instead, they are loaded from a worker
thread and the ShellAppCache notifies of changes.

To simplify maintenance, ShellAppCache manages this directly and the
existing ShellAppSystem wraps the cache. We may want to graft these
together in the future, but now it provides the easiest way to backport
changes to older Shell releases.

Another source of compositor thread disk access was in determining the
name for an application directory. Translations are provided via GKeyFile
installed in "desktop-directories". Each time we would build the name
for a label (or update it) we would have to load all of these files.

Instead, the ShellAppCache caches that information and updates the cache
in bulk when those change. We can reduce this in the future to do less
work, but chances are these will come together anyway so that is probably
worth fixing if we ever come across it.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2282

6 years agoSt: Ensure to update entry hint visibility with IM preedit
Carlos Garnacho [Wed, 11 Mar 2020 11:32:07 +0000 (12:32 +0100)]
St: Ensure to update entry hint visibility with IM preedit

Commit 88ac339774 changed StEntry behavior so the text hint would
stay visible while focused, as long as the text buffer is empty.
However, IMs that use preedit still should count as "started typing",
while the text buffer is still officially empty.

To fix this, check on st_entry_update_hint_visibility() that there's
indeed no preedit buffer before showing the hint. We can't directly
listen to internal preedit buffer changes in ClutterText, so handle
preedit buffer updates through the ::cursor-changed signal that will
be indirectly emitted.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1084

6 years agowindowManager: Do not shutdown ibus/xsettings on X11 compositor restart
Carlos Garnacho [Tue, 10 Mar 2020 12:23:17 +0000 (13:23 +0100)]
windowManager: Do not shutdown ibus/xsettings on X11 compositor restart

These paths are meant for Xwayland, not for X11 compositors being restarted
through alt-f2 + r. Maybe some signal analogous to init-xserver should be
added for Xwayland shutdown paths, but this signal we are currently
listening for is backend agnostic.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2329
6 years agoibusManager: fix ibus launch error because of wrong method name
Alynx Zhou [Mon, 9 Mar 2020 02:09:47 +0000 (10:09 +0800)]
ibusManager: fix ibus launch error because of wrong method name

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1080

6 years agoUpdate German translation
Tim Sabsch [Mon, 9 Mar 2020 22:40:48 +0000 (22:40 +0000)]
Update German translation

6 years agost/texture-cache: Fix invalid memory write related to X11 window icons
Sebastian Keller [Mon, 9 Mar 2020 01:17:19 +0000 (02:17 +0100)]
st/texture-cache: Fix invalid memory write related to X11 window icons

st_texture_cache_bind_weak_notify calls g_clear_signal_handler which
then calls st_texture_cache_free_bind. st_texture_cache_free_bind frees
the bind structure, so by the time g_clear_signal_handler tries to write
bind->notify_signal_id, bind has already been freed.

Fix this by using g_signal_handler_disconnect instead.

This partially reverts 135d178d08

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2334